import request from '@/utils/request'
import BaseApi from '../BaseApi'

/**
 * 用户模块
 */
const apiRouter = '/FaSysGridApi'
export default class FaSysGrid extends BaseApi {
  constructor(gridId) {
    super(apiRouter, gridId)
  }

  /**
   * 获取当前网格配置
   * 配置字段转换为json
   * @returns
   */
  getCurrentJson() {
    return this.getJson(this.gridId)
  }

  /**
   * 获取网格配置
   * 配置字段转换为json
   * @param {*} id 网格id
   * @returns
   */
  getJson(id) {
    return super.get(id).then((res) => {
      for (const key in res.data) {
        if (key.includes('Json')) {
          res.data[key] = JSON.parse(res.data[key])
        }
      }
      return res.data
    })
  }

  /**
   * 编辑网格设置 @param data
   * @returns {*}
   */
  editSet(data) {
    return request({
      url: `${this.apiRouter}/editSet`,
      method: 'post',
      data
    })
  }

  /**
   * 获取某个网格配置
   * 配置字段转换为json
   * @param {*} id
   * @param {*} fieldJsonName
   * @returns
   */
  async getJsonField(id, fieldJsonName) {
    const datas = await super.get(id)
    for (const key in datas.data) {
      if (key.includes(fieldJsonName)) {
        datas.data[key] = JSON.parse(datas.data[key])
      }
    }
    return datas.data[fieldJsonName]
  }
  /**
   * 获取所有表
   * @returns
   */
  tables() {
    return request({
      url: `${apiRouter}/tables`,
      method: 'get'
    })
  }

  /**
   * 初始化网格配置 @param data
   * @returns {*}
   */
  initialize(id) {
    return request({
      url: `${this.apiRouter}/initialize/${id}`,
      method: 'get'
    })
  }

  /**
   * 获取网格数据源字段列表
   * @param {*} id
   * @returns
   */
  fields(id) {
    return request({
      url: `${this.apiRouter}/fields/${id}`,
      method: 'get'
    })
  }
}
